//类型保护（更好的去识别类型） js本身就用类型识别功能 typeof instance in


function getV(val: string | number) {
    if (typeof val == "string") {
        val.split('');
    } else {
        val.toFixed();
    }
}

class Person {
}

class Animal {
}

function getV1(val: Person | Animal) {
    if (val instanceof Person) {
        val
    } else {
        val
    }
}

//根据是否包含某个属性来区分 Finsh 游泳 Bird 飞
interface Fish {
    kind: '鱼',
    swimming: string
}

interface Bird {
    kind: '鸟',
    fly: string
}
function getV2(val: Fish | Bird) {
    if (val.kind == '鱼') {
        val
    } else {
        val;
    }
}

//ts里面也有自己的概念 可辨识的类型
function getV3(val: Fish | Bird) {

}

function isFinsh(x: Fish | Bird): x is Fish {//ts语法 就是标识具体的返回类型
    return x.kind == "鱼";
}

function getV4(val: Fish | Bird) {
    if (isFinsh(val)) {
        val
    } else {
        val
    }
}


//ts 中完整性保护
interface ISquare {
    kind: "square",
    width: number
}

interface IRant {
    kind: 'rant',
    width: number,
    height: number
}

interface ICircle {
    kind: ''
}

export { }